110 DIM CM$(22),CM(22),IN$(5),IN(5),OB$(13),OB(13),DS$(40),FL(10,10) 120 SYS65517:CC=PEEK(781) 130 IFCC=40THENPOKE53281,1 150 GOSUB 700:GOSUB1620 155 PRINT"[147]" 160 GOSUB790:CM(2)=1:CM(5)=1:FORI=14TO19:CM(I)=1:NEXT:OB(1)=1 170 PR$=DS$(1):GOSUB2570:IFGTTHENPR$=DS$(2):GOSUB2570 180 IFGT=0THENPR$=DS$(3):GOSUB2570 190 GOSUB2310:IFPL=2ORPL=5THENGOSUB800:GOTO190 200 IFPL=16ANDGT=0THENPR$=DS$(3):GOSUB2570:GOTO190 210 IFPL=16THEN280 220 IFPL>16THENGOTO250 230 GOTO170 240 PRINT"[147]":PR$=DS$(4):GOSUB2570 250 GOSUB790:FORI=14TO19:CM(I)=1:NEXT:GOSUB2310:IFPL=16THEN280 260 IFPL=15THENPR$=DS$(4):GOSUB2570 270 GOTO250 280 GOSUB790:PRINT"[147]":CM(1)=1:CM(3)=1:CM(6)=1:FORI=14TO19:CM(I)=1:NEXT 290 CM(4)=1 300 PR$=DS$(5):GOSUB2570:IFMB=0THENPR$=DS$(6):GOSUB2570 310 IFMBTHENPR$=DS$(7):CM(7)=1:GOSUB2570:IFNT=1THENPR$=DS$(11):GOSUB 2570 320 IFFD=0THENPR$=DS$(8):NT=1:GOSUB2570 330 IFFDTHENPR$=DS$(9):NT=0:GOSUB2570 340 GOSUB2310:IFPL=15THEN300 350 IF(PL=18)OR(PL=19)THENGOTO300 360 IFPL=17THENGOTO160 370 IF(PL=16)AND(FD=0)THEN320 380 IFPL=16ANDFD=0THEN320 390 IFPL=16THEN450 400 IFPL=1THENPR$=DS$(10):GOSUB2570 410 IF(PL=3)OR(PL=6)THENGOSUB900:GOTO340 415 IFPL=7ANDNT=0THENPRINT"I SEE NO NOTE HERE!":GOTO340 420 IFPL<>7THEN340 430 PR$="THERE IS A QUESTION ON THE NOTE.":GOSUB2570 435 GOSUB1320:IFWR=1THENGOTO160 440 PR$=DS$(12):GOSUB2570:PR$=DS$(13):GOSUB2570:FD=1:MB=0:GOTO340 450 GOSUB790:PRINT"[147]"; 470 PR$="A TRAP DOOR OPENS BENEATH YOUR FEET AND YOU BEGIN SLIDING DOWN A " 480 PR$=PR$+"CHUTE. YOU PASS A NEON SIGN THAT SAYS :":GOSUB2570:PRINT 490 IFCC=40THEN505 500 PRINT" 'MATH DUNGEON'":PRINT:PRINT" 'LEVEL "+STR$(LV)+"'" 501 PRINT:PRINT:GOTO510 505 PRINT" 'MATH DUNGEON'" 506 PRINT:PRINT" 'LEVEL "+STR$(LV)+"'" 510 PR$="PRESS ANY KEY TO CONTINUE":GOSUB2570:PRINT:PRINT 520 GETA$:IFA$=""THEN520 530 LT=1:PX=INT(RND(1)*10)+1:PY=INT(RND(1)*10)+1:FL(PY,PX)=2 540 GOSUB790:CM(9)=1:FORI=12TO19:CM(I)=1:NEXT:CM(9)=LT:CM(22)=1 550 IFFL(PY,PX)=2THENPRINT"[147]":PR$=DS$(14):GOSUB2570 560 IFFL(PY,PX)=1THENPRINT"[147]":PR$=DS$(15):GOSUB2570 570 IFLT=1THENPR$=DS$(16):GOSUB2570 580 GOSUB2310 590 IFPL=9THENGOSUB950:GOTO580 600 IFPL=12THENGOSUB970:GOTO580 610 IFPL=13THENGOSUB1000:GOTO580 620 IFPL=15ANDLO=0THEN550 630 IFPL=15ANDLO=1THENGOSUB1020:GOTO570 640 IFPL=14THEN580 650 IFPL=22THENGOSUB2470:GOTO670 660 IFPL>15THENGOSUB1560:IF(LO=0)OR(WA=1)THEN580 670 ONZGOSUB1860,1860,2000 680 GOTO670 690 END 700 PRINT"[147]":IFCC=40THENPRINTTAB(10);:GOTO720 710 PRINTTAB(1); 720 PRINT" MATH DUNGEON ":PRINT"":IFCC=40THENPRINTTAB(12);:GOTO740 730 PRINTTAB(3); 740 PRINT"A MATH ADVENTURE" 750 PRINT"":IFCC=40THEN755 751 PRINT" ENTER DESIRED LEVEL(1-5)";:GOTO760 755 PRINT" ENTER DESIRED LEVEL(1-5)"; 760 INPUTLV:IFLV<1ORLV>5THENGOTO750 770 FORI=1TO22:READCM$(I):NEXT:FORI=1TO5:READIN$(I):NEXT 780 FORI=1TO29:READDS$(I):NEXT:RETURN 790 FORI=1TO22:CM(I)=0:NEXTI:IFIN(5)=1THENCM(20)=1:RETURN 800 IFPL=2ANDGT=1THENPR$="THE GATE IS ALREADY OPEN.":GOSUB2570 810 IFPL=2ANDGT=0THENGT=1:PRINT"OK." 820 IFPL=5ANDGT=0THENPR$="THE GATE IS ALREADY CLOSED.":GOSUB2570 830 IFPL=5ANDGT=1THENGT=0:PRINT"OK." 840 RETURN 850 IFPL=1ANDFD=1THENPR$="THE DOOR IS ALREADY OPEN.":GOSUB2570 860 IFPL=1ANDFD=0THENFD=1:PRINT"OK." 870 IFPL=4ANDFD=0THENPR$="THE DOOR IS ALREADY CLOSED.":GOSUB2570 880 IFPL=4ANDFD=1THENFD=0:PRINT"OK." 890 RETURN 900 IFPL=3ANDMB=1THENPR$="THE MILKBOX IS ALREADY OPEN.":GOSUB2570 910 IFPL=3ANDMB=0THENMB=1:PRINT"OK.":CM(7)=1 920 IFPL=6ANDMB=0THENPR$="THE MILKBOX IS ALREADY CLOSED.":GOSUB2570 930 IFPL=6ANDMB=1THENMB=0:PRINT"OK.":CM(7)=0 940 RETURN 950 IFIN(1)=1THENPR$="YOU ALREADY HAVE THE LIGHT.":GOSUB2570:RETURN 960 IFLT=1THENLT=0:IN(1)=1:PRINT"OK.":CM(9)=0:RETURN 970 IFIN(1)=0THENPR$="YOU DO NOT HAVE A LIGHT.":GOSUB2570:RETURN 980 IFLO=0THENPRINT"OK.":LO=1:RETURN 990 IFLO=1THENPR$="THE LIGHT IS ALREADY ON.":GOSUB2570:RETURN 1000 IFLO=0THENPR$="THE LIGHT IS ALREADY OFF.":GOSUB2570:RETURN 1010 IFLO=1THENPRINT"OK.":LO=0:RETURN 1020 PRINT"[147]"DS$(16-FL(PY,PX)) 1030 EC=PX+1:DN$="EAST":IFEC=11THENGOTO1050 1040 IFFL(PY,EC)<>0THENGOSUB1120 1050 WC=PX-1:DN$="WEST":IFWC=0THENGOTO1070 1060 IFFL(PY,WC)<>0THENGOSUB1120 1070 NC=PY-1:DN$="NORTH":IFNC=0THENGOTO1090 1080 IFFL(NC,PX)<>0THENGOSUB1120 1090 SC=PY+1:DN$="SOUTH":IFSC=11THENGOTO1110 1100 IFFL(SC,PX)<>0THENGOSUB1120 1110 RETURN 1120 PRINTDN$" IS A DOORWAY.":RETURN 1130 IFGK=0ANDBK=0ANDRK=0THENPRINT"WHAT KEY?":RETURN 1140 PRINT"OK." 1150 IFGKTHENGK=0:IN(2)=1:RETURN 1160 IFBKTHENBK=0:IN(3)=1:RETURN 1170 IFRKTHENRK=0:IN(4)=1:BD=2:RETURN 1180 RETURN 1190 IFGD<>1THEN1220 1200 IFIN(2)=0THENPR$=DS$(10):GOSUB2570:RETURN 1210 IFIN(2)=1THENPR$=DS$(27):GOSUB2570:MA=1:CM(11)=1:CM(1)=0:RETURN 1220 IFBD<>1THEN1250 1230 IFIN(3)=0THENPR$=DS$(10):GOSUB2570:RETURN 1240 IFIN(3)=1THENPR$=DS$(28):GOSUB2570:CM(8)=1:RK=1:CM(1)=0:RETURN 1250 IFRD<>1THEN1280 1260 IFIN(4)=0THENPR$=DS$(10):GOSUB2570:RETURN 1270 IFIN(4)=1THENPRINT"[147]":PR$=DS$(29):GOSUB2570:GOSUB2520 1280 RETURN 1290 G=INT(RND(1)*LV*10)+1:PR$="YOU HAVE FOUND "+STR$(G)+" GOLD PIECES." 1300 GOSUB2570:GP=GP+G:PR$="YOU NOW HAVE "+STR$(GP)+" GOLD PIECES.":GOSUB2570 1310 CM(10)=0:RETURN 1320 OP=INT(RND(1)*4)+1 1340 IF(LV<=2)AND(OP>=3)THEN1320 1350 PRINT"WHAT IS..."; 1360 ONOPGOTO1370,1400,1430,1460 1370 X=INT(RND(1)*LV*10):Y=INT(RND(1)*LV*10) 1380 IFLV>4THENX=X-INT(RND(1)*LV*5):Y=Y-INT(RND(1)*LV*5) 1390 Z1=X+Y:PRINTX" + "Y"?":INPUTZ$:GOSUB1510:IFWR=2THEN1390 1395 RETURN 1400 X=INT(RND(1)*LV*10):Y=INT(RND(1)*LV*10) 1410 IFLV<=3THENIFY>XTHENT=X:X=Y:Y=T 1420 Z1=X-Y:PRINTX" - "Y"?":INPUTZ$:GOSUB1510:IFWR=2THEN1420 1425 RETURN 1430 X=INT(RND(1)*LV*5):Y=INT(RND(1)*LV*5) 1440 IFLV>=4THENX=X-INT(RND(1)*LV*2):Y=Y-INT(RND(1)*LV*2) 1450 Z1=X*Y:PRINTX" * "Y"?":INPUTZ$:GOSUB1510:IFWR=2THEN1450 1455 RETURN 1460 X=INT(RND(1)*LV*5):Y=INT(RND(1)*LV*5) 1470 IFLV>=4THENX=X-INT(RND(1)*LV*3):Y=Y-INT(RND(1)*LV*3) 1480 IFY=0THENY=1 1490 Z1=X/Y:IFZ1<>INT(Z1)THEN1460 1500 PRINTX" / "Y"?":INPUTZ$ 1505 GOSUB1510:IFWR=2THEN1490 1506 RETURN 1510 IFVAL(Z$)<>0THENZ2=VAL(Z$):GOTO1540 1520 IFZ$<>"0"THENPR$="ANSWER THE QUESTION FIRST!":GOSUB2570:WR=2:RETURN 1530 Z2=VAL(Z$) 1540 IFZ1=Z2THENPRINT"[147]CORRECT!!":WR=0:RETURN 1550 PRINT"[147]INCORRECT!!":WR=1:RETURN 1560 WA=0:IFLO=0THENPR$="I'D TURN ON MY LIGHT FIRST.":GOSUB2570:GOTO1610 1570 C=ABS(PL=18)-ABS(PL=19):D=ABS(PL=17)-ABS(PL=16):TX=PX+C:TY=PY+D 1580 IFTX=11ORTX=0ORTY=11ORTY=0THENPRINT"THERE IS A WALL THERE.":WA=1:GOTO1610 1590 IFFL(TY,TX)=0THENPRINT"THERE IS A WALL THERE.":WA=1:GOTO1610 1600 PX=TX:PY=TY 1610 Z=FL(PY,PX):RETURN 1620 FORI=1TO10:FORJ=1TO10:FL(I,J)=0:NEXTJ:NEXTI 1625 NM=INT(RND(1)*10)+LV:I=1 1630 X=INT(RND(1)*10)+1:Y=INT(RND(1)*10)+1:IFFL(Y,X)=3THEN1630 1640 FL(Y,X)=3:I=I+1:IFI<=NMTHEN1630 1650 FORI=1TONM*2 1660 X=INT(RND(1)*10)+1:Y=INT(RND(1)*10)+1 1670 IFFL(Y,X)=3THEN1660 1680 FL(Y,X)=0:NEXTI 1690 FORI=1TO10:FORJ=1TO10 1700 IFFL(I,J)=3THENGOSUB1780 1710 NEXTJ:NEXTI 1720 GOSUB1840:GX=X:GY=Y:IF(BX=XANDBY=Y)OR(RX=XANDRY=Y)ORFL(Y,X)=0THEN1720 1730 GOSUB1840:BX=X:BY=Y:IF(GX=XANDGY=Y)OR(RX=XANDRY=Y)ORFL(Y,X)=0THEN1730 1740 GOSUB1840:X1=X:Y1=Y:IF(X2=XANDY2=Y)OR(X3=XANDY3=Y)ORFL(Y,X)=0THEN1740 1750 GOSUB1840:X2=X:Y2=Y:IF(X1=XANDY1=Y)OR(X3=XANDY3=Y)ORFL(Y,X)=0THEN1750 1760 GOSUB1840:X3=X:Y3=Y:IF(X1=XANDY1=Y)OR(X2=XANDY2=Y)ORFL(Y,X)=0THEN1760 1770 RETURN 1780 FORK=JTO10:GOSUB1800:NEXTK:FORK=JTO1STEP-1:GOSUB1800:NEXTK 1790 FORK=ITO10:GOSUB1820:NEXTK:FORK=ITO1STEP-1:GOSUB1820:NEXTK:RETURN 1800 IFFL(I,K)=0THENFL(I,K)=INT(RND(1)*2)+1 1810 RETURN 1820 IFFL(K,J)=0THENFL(K,J)=INT(RND(1)*2)+1 1830 RETURN 1840 X=INT(RND(1)*10)+1:Y=INT(RND(1)*10)+1:IFFL(Y,X)=0THEN1840 1850 RETURN 1860 GOSUB790:FORI=12TO19:CM(I)=1:NEXT:CM(22)=1 1870 PRINT"[147]":PR$=DS$(16-Z):GOSUB2570:IFLO=1THENGOSUB1030 1880 GOSUB2270:GOSUB2200 1890 GOSUB2310:IFPL=15ANDLOTHENGOSUB1020:GOTO1880 1900 IFPL=20THENGOSUB2850:GOTO1890 1910 IFPL=15ANDLO=0THEN1870 1920 IFPL=1THENGOSUB1190:GOTO1890 1930 IFPL=14THEN1890 1940 IFPL=11THENGOSUB2490:GOTO1890 1950 IFPL=8THENGOSUB1130:GOTO1890 1960 IFPL=22THENGOSUB2470:RETURN 1970 IFPL>15THENGOSUB1560:IF(LO=0)OR(WA=1)THEN1890 1980 RETURN 2000 GOSUB790:FORI=10TO19:CM(I)=1:NEXTI:CM(22)=1 2010 PR$=DS$(23):GOSUB2570:PR$=DS$(24):GOSUB2570:GOSUB1320:IFWR=0THENGOTO2050 2020 GP=0:PR$=DS$(25):GOSUB2570:FORW=1TO2000:NEXTW 2030 X=INT(RND(1)*10+1):Y=INT(RND(1)*10)+1:IFFL(Y,X)=0THEN2030 2040 PX=X:PY=Y:Z=FL(PY,PX):RETURN 2050 PR$=DS$(26):GOSUB2570:FL(PY,PX)=2 2060 PR$=DS$(14):GOSUB2570:IFLOTHENGOSUB1030 2070 GOSUB2270:GOSUB2200 2080 GOSUB2310 2090 IFPL=20THENGOSUB2850:GOTO2080 2100 IFPL=15ANDLOTHENGOSUB1020:GOTO2070 2110 IFPL=15ANDLO=0THEN2060 2120 IFPL=14THEN2080 2130 IFPL=11THEN2490:GOTO2080 2140 IFPL=8THENGOSUB1130:GOTO2080 2150 IFPL=1THENGOSUB1190:GOTO2080 2160 IFPL=10THENGOSUB1290:GOTO2080 2170 IFPL=22THENGOSUB2470:RETURN 2180 IFPL>15THENGOSUB1560:IF(LO=0)OR(WA=1)THEN2080 2190 RETURN 2200 IF(X1=PXANDY1=PY)ANDGD<>2THENPR$=DS$(17):GOSUB2570:GD=1:CM(1)=1 2210 IF(X2=PXANDY2=PY)ANDBD<>2THENPR$=DS$(19):GOSUB2570:BD=1:CM(1)=1 2220 IF(X3=PXANDY3=PY)ANDRD<>2THENPR$=DS$(18):GOSUB2570:RD=1:CM(1)=1 2230 IF(X1<>PXORY1<>PY)ANDGD<>2THENGD=0 2240 IF(X2<>PXORY2<>PY)ANDBD<>2THENBD=0 2250 IF(X3<>PXORY3<>PY)ANDRD<>2THENRD=0 2260 RETURN 2270 IFBX=PXANDBY=PYANDIN(3)=0THENPR$=DS$(21):GOSUB2570:BK=1:CM(8)=1 2280 IFGX=PXANDGY=PYANDIN(2)=0THENPR$=DS$(20):GOSUB2570:GK=1:CM(8)=1 2290 IFRX=PXANDRY=PYANDIN(4)=0THENPR$=DS$(22):GOSUB2570:RK=1:CM(8)=1 2300 RETURN 2310 INPUTC$:PL=0:FORI=1TO22:IFCM$(I)=C$THENPL=I:I=23 2320 NEXT 2330 IFPL=0THENPRINT"YOU CAN'T DO THAT!":GOTO2310 2340 N$="":I=1 2350 T$=MID$(C$,I,1) 2360 IFASC(T$)=32THENL=I:GOTO2390 2370 IFI=LEN(C$)THENGOTO2410 2380 I=I+1:GOTO2350 2390 N$=MID$(C$,L+1,LEN(C$)) 2400 IFCM(PL)=0THENPRINT"I SEE NO "N$" HERE!":GOTO2310 2410 IFC$="INV"THENGOTO2430 2420 RETURN 2430 PRINT"YOU ARE CARRYING :" 2440 FORI=1TO5:IFIN(I)=1THENPRINT"A "IN$(I) 2450 NEXTI:IFGP<>0THENPRINTGP" GOLD PIECES." 2460 RETURN 2470 PX=INT(RND(1)*10)+1:PY=INT(RND(1)*10)+1:IFFL(PY,PX)=0THEN2470 2480 Z=FL(PY,PX):RETURN 2490 IFIN(5)=1THENPR$="YOU ALREADY HAVE THE MAP!":GOSUB2570:RETURN 2500 IFMA=0THENPRINT"WHAT MAP?":RETURN 2510 PRINT"OK.":IN(5)=1:MA=0:CM(20)=1:GD=2:RETURN 2520 PR$="YOU HAVE FOUND YOUR WAY OUT OF THE MATH DUNGEON.":GOSUB2570 2530 PR$=" YOU HAVE WON "+STR$(GP)+" GOLD PIECES IN YOUR JOURNEY.":GOSUB2570 2540 PRINT" PLAY AGAIN";:INPUT A$ 2550 IFA$="Y"THENRUN 2560 END 2570 IFLEN(PR$)<=CCTHENPRINTPR$:RETURN 2580 T$=MID$(PR$,CC,1):IFASC(T$)=32THENI=CC:GOTO2620 2590 I=CC-1 2600 T$=MID$(PR$,I,1):IFASC(T$)=32THENGOTO2620 2610 I=I-1:GOTO2600 2620 A$=MID$(PR$,I+1,LEN(PR$)):B$=MID$(PR$,1,I-1):PRINTB$ 2630 IFLEN(A$)<=CCTHENPRINTA$:RETURN 2640 PR$=A$:GOTO2570 2650 DATAOPEN DOOR,OPEN GATE,OPEN MILKBOX,CLOSE DOOR,CLOSE GATE,CLOSE MILKBOX 2660 DATAGET NOTE,GET KEY,GET LIGHT,GET GOLD,GET MAP,LIGHT ON,LIGHT OFF,INV 2670 DATALOOK,N,S,E,W,MAP,MAP,ALGEBRA,LIGHT,GREEN KEY,BLUE KEY,RED KEY,MAP 2680 DATAYOU ARE FACING NORTH. A GATE IS IN FRONT OF YOU.,THE GATE IS OPEN. 2690 DATATHE GATE IS CLOSED.,YOU ARE IN A DENSE FOREST. 2700 DATAYOU ARE IN FRONT OF AN OLD HOUSE. THERE IS A MILKBOX BY THE DOOR. 2710 DATATHE MILKBOX IS CLOSED.,THE MILKBOX IS OPEN.,THE DOOR IS CLOSED. 2720 DATATHE DOOR IS OPEN.,THE DOOR IS LOCKED. YOU DO NOT HAVE THE RIGHT KEY. 2730 DATATHERE IS A NOTE IN THE MILKBOX.,THE DOOR FLIES OPEN WITH A BANG! 2740 DATATHE NOTE DISAPPEARS AND THE MILKBOX CLOSES. 2750 DATAYOU ARE IN A COLD AND DAMP ROOM.,YOU ARE IN A LONG AND NARROW HALLWAY. 2760 DATATHERE IS AN UNLIT LIGHT HERE.,THERE IS A GREEN DOOR HERE. 2770 DATATHERE IS A RED DOOR HERE.,THERE IS A BLUE DOOR HERE. 2780 DATATHERE IS A GREEN KEY HERE.,THERE IS A BLUE KEY HERE. 2790 DATATHERE IS A RED KEY HERE.,BEFORE YOU CAN GET A GOOD LOOK AT THE AREA.. 2800 DATAA MONSTER JUMPS OUT AND SAYS 'YOU MUST ANSWER THIS QUESTION! 2810 DATA'NOW I'LL TAKE ALL YOUR GOLD AND TRANSPORT YOU AWAY! 2820 DATATHE MONSTER DISAPPEARS. YOU SEE SOME GOLD HERE! 2830 DATATHERE IS A MAP HERE!,THERE IS A RED KEY HERE! 2840 DATATHERE IS A SUDDEN FLASH AND YOU FIND YOURSELF AMIDST SOME TREES. 2850 IFIN(5)=0THENPRINT"YOU DON'T HAVE A MAP!":RETURN 2860 PRINT"[147]":PRINT 2870 FORI=1TO10:TB=1:FORJ=1TO10 2880 IFI=PYANDJ=PXTHENPRINTTAB(TB)"*";:GOTO2930 2890 IFFL(I,J)=3THENPRINTTAB(TB)"[144]M";:GOTO2930 2900 IFFL(I,J)=2THENPRINTTAB(TB)"R";:GOTO2930 2910 IFFL(I,J)=1THENPRINTTAB(TB)"[156]H";:GOTO2930 2920 PRINTTAB(TB)"[158] [146]"; 2930 TB=TB+2:NEXTJ:PRINT:PRINT:NEXTI 2940 PRINT"":RETURN